This invention relates to the field of automated information processing, and more specifically to a computer tool for providing computer clients a method and system for accessing and managing virtual machines over a distributed network.
Virtual machines are computers that exist in software. They run in the memory of another computer called a host computer, sharing the host's hardware and network connections. The host is usually able to sponsor several virtual machines simultaneously, making ownership of multiple computers more economical. In many cases, management of networks is made easier due to a decrease in hardware requirements. The virtual machine typically consists of a file that stores all of the data for the virtual machine, including the operating system, applications and data files. An application residing on the sponsoring host will load the virtual machine file into the host's memory so that the virtual machine runs as an application on the host.
AT&T has developed and published an open-source software product called VNC that permits a first (client) computer to operate a remote (server) computer over a network. It does not matter whether the remote computer is real or virtual, or even whether the operating systems are compatible. Because of its ready availability, effectiveness and relatively simplicity, VNC remote control software is widely used for connecting client computers with remote machines. This software provides a web-based Java client that can connect to a remote host with the server software installed. Once connected, a user has full desktop access. The software, however, does not allow multiple users to access their multiple hosts through a single IP address and a single port.
Virtual machines can run in persistent or non-persistent mode. In persistent mode, any changes the client makes while using the virtual machine are saved. This allows a client to interact with a virtual machine in the same way it would with a hardware-based computer. For example, a student using a virtual machine running persistent mode might stop in the middle of a session, log off the computer, and return later to pick up the instruction at the same point. In non-persistent mode, the information and changes to the virtual machine are not stored in non-volatile memory and the virtual machine is returned to its original state at the end of a session. The advantage to non-persistent mode is that many clients can access the same virtual machine either simultaneously or sequentially and have a clean, unchanged system at each login. For example, training systems can be built with non-persistent mode, allowing students the temporary use of a virtual machine to take the training. Upon completion of training, the system is automatically restored to its original state for the next student.
The use of virtual machines is not without problems. Access and management across a distributed network is not easily accomplished. Scalability is critical to successful operation in an enterprise environment. Accessing a virtual machine directly on the host machine's console restricts the host to providing virtual machines for only a single client during each session.
In order to make such a system viable for multiple simultaneous clients, remote access to the host must be accomplished. Additionally, networking issues must be resolved in order to provide security and isolation of each client session. Such a system must be scalable, having the ability to add additional supporting hosts on the fly.